<%--
  Created by IntelliJ IDEA.
  User: 17355
  Date: 2019/6/21
  Time: 15:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<h1>1、简述JSP运行机制?</h1>
<p>可以把执行JSP页面的执行分成两个阶段，一个是转译阶段，一个是请求阶段。<br>
    转译阶段：JSP页面转换成Servlet类。<br>
    请求阶段：Servlet类执行，将响应结果发送至客户端。
</p>
<p>1.用户（客户机）访问响应的JSP页面，如http://localhost:8080/Prj_test/ch02/HelloJSP.jsp。<br>
    2.服务器找到相应的JSP页面。<br>
    3.服务器将JSP转译成Servlet的源代码。<br>
    4.服务器将Servlet源代码编译为class文件。<br>
    5.服务器将class文件加载到内存并执行。<br>
    6.服务器讲class文件执行后生成HTML代码发送给客户机，客户机浏览器根据响应的HTML代码进行显示。<br>
    如果该JSP页面为第一次执行，那么会经过这两个阶段，而如果不是第一次执行，那么将只会执行请求阶段。这也是为什么第二次执行JSP页面时明显比第一次执行要要快的原因。<br>
    如果修改了JSP页面，那么服务器将发现到该修改，并重新执行转译阶段和请求阶段。这也是为什么修改页面后访问速度变慢的原因。
</p>

<hr>

<h1>2、简述JSP九大内置对象及四个作用域?</h1>
<ul>
    <li>request --- 请求对象　 --- 类型 javax.servlet.ServletRequest --- 作用域 Request</li>
    <li>response --- 响应对象 --- 类型 javax.servlet.SrvletResponse --- 作用域 Page</li>
    <li>pageContext ---页面上下文对象--- 类型 javax.servlet.jsp.PageContext --- 作用域 Page</li>
    <li>session --- 会话对象 --- 类型 javax.servlet.http.HttpSession --- 作用域 Session</li>
    <li>application--- 应用程序对象 --- 类型 javax.servlet.ServletContext --- 作用域 Application</li>
    <li>out --- 输出对象 --- 类型 javax.servlet.jsp.JspWriter --- 作用域 Page</li>
    <li>config --- 配置对象 --- 类型 javax.servlet.ServletConfig --- 作用域 Page</li>
    <li>page --- 页面对象 --- 类型 javax.lang.Object --- 作用域 Page</li>
    <li>exception --- 例外对象 --- 类型 javax.lang.Throwable --- 作用域 page</li>
</ul>

<hr>

<h1>3、简述常用HTTP状态码?</h1>
<p>100 Continue<br>
    初始的请求已经接受，客户应当继续发送请求的其余部分<br>
    101 Switching Protocols<br>
    服务器将遵从客户的请求转换到另外一种协议<br>
    200 OK<br>
    一切正常，对GET和POST请求的应答文档跟在后面<br>
    201 Created<br>
    服务器已经创建了文档，Location头给出了它的URL。<br>
    202 Accepted<br>
    已经接受请求，但处理尚未完成。<br>
    203 Non-Authoritative Information<br>
    文档已经正常地返回，但一些应答头可能不正确，因为使用的是文档的拷贝<br>
    204 No Content<br>
    没有新文档，浏览器应该继续显示原来的文档。如果用户定期地刷新页面，而Servlet可以确定用户文档足够新，这个状态代码是很有用的<br>
    205 Reset Content<br>
    没有新的内容，但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容<br>
    206 Partial Content<br>
    客户发送了一个带有Range头的GET请求，服务器完成了它<br>
    300 Multiple Choices<br>
    客户请求的文档可以在多个位置找到，这些位置已经在返回的文档内列出。如果服务器要提出优先选择，则应该在Location应答头指明。<br>
    301 Moved Permanently<br>
    客户请求的文档在其他地方，新的URL在Location头中给出，浏览器应该自动地访问新的URL。<br>
    302 Found<br>
    类似于301，但新的URL应该被视为临时性的替代，而不是永久性的。<br>
    303 See Other<br>
    类似于301/302，不同之处在于，如果原来的请求是POST，Location头指定的重定向目标文档应该通过GET提取<br>
    304 Not Modified<br>
    客户端有缓冲的文档并发出了一个条件性的请求（一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档）。服务器告诉客户，原来缓冲的文档还可以继续使用。<br>
    305 Use Proxy<br>
    客户请求的文档应该通过Location头所指明的代理服务器提取<br>
    307 Temporary Redirect<br>
    和302（Found）相同。许多浏览器会错误地响应302应答进行重定向，即使原来的请求是 POST，即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因，HTTP
    1.1新增了307，以便更加清除地区分几个状态代码： 当出现303应答时，浏览器可以跟随重定向的GET和POST请求；如果是307应答，则浏览器只能跟随对GET请求的重定向。<br>
    400 Bad Request<br>
    请求出现语法错误。<br>
    401 Unauthorized<br>
    客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头，浏览器据此显示用户名字/密码对话框，然后在填写合适的Authorization头后再次发出请求。<br>
    403 Forbidden<br>
    资源不可用。<br>
    404 Not Found<br>
    无法找到指定位置的资源<br>
    405 Method Not Allowed<br>
    请求方法（GET、POST、HEAD、Delete、PUT、TRACE等）对指定的资源不适用。<br>
    406 Not Acceptable<br>
    指定的资源已经找到，但它的MIME类型和客户在Accpet头中所指定的不兼容<br>
    407 Proxy Authentication Required<br>
    类似于401，表示客户必须先经过代理服务器的授权。<br>
    408 Request Timeout<br>
    在服务器许可的等待时间内，客户一直没有发出任何请求。客户可以在以后重复同一请求。<br>
    409 Conflict<br>
    通常和PUT请求有关。由于请求和资源的当前状态相冲突，因此请求不能成功。<br>
    410 Gone<br>
    所请求的文档已经不再可用，而且服务器不知道应该重定向到哪一个地址。它和404的不同在于，返回407表示文档永久地离开了指定的位置，而404表示由于未知的原因文档不可用。<br>
    411 Length Required<br>
    服务器不能处理请求，除非客户发送一个Content-Length头。<br>
    412 Precondition Failed<br>
    请求头中指定的一些前提条件失败<br>
    413 Request Entity Too Large<br>
    目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求，则应该提供一个Retry-After头<br>
    414 Request URI Too Long<br>
    URI太长<br>
    416 Requested Range Not Satisfiable<br>
    服务器不能满足客户在请求中指定的Range头<br>
    500 Internal Server Error<br>
    服务器遇到了意料不到的情况，不能完成客户的请求<br>
    501 Not Implemented<br>
    服务器不支持实现请求所需要的功能。例如，客户发出了一个服务器不支持的PUT请求<br>
    502 Bad Gateway<br>
    服务器作为网关或者代理时，为了完成请求访问下一个服务器，但该服务器返回了非法的应答<br>
    503 Service Unavailable<br>
    服务器由于维护或者负载过重未能应答。例如，Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头<br>
    504 Gateway Timeout<br>
    由作为代理或网关的服务器使用，表示不能及时地从远程服务器获得应答<br>
    505 HTTP Version Not Supported<br>
    服务器不支持请求中所指明的HTTP版本
</p>


</body>
</html>
